// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

{%- set header_guard = "%s_CONNECTIVITY_H_"|format(
        module.path|upper|replace("/","_")|replace(".","_")|
            replace("-", "_")) %}

{%- macro namespace_begin() %}
{%-   for namespace in namespaces_as_array %}
namespace {{namespace}} {
{%-   endfor %}
{%- endmacro %}

{%- macro namespace_end() %}
{%-   for namespace in namespaces_as_array|reverse %}
}  // namespace {{namespace}}
{%-   endfor %}
{%- endmacro %}


#ifndef {{header_guard}}
#define {{header_guard}}

#include <base/memory/weak_ptr.h>
#include <mojo/public/cpp/bindings/pending_receiver.h>
#include <mojo/public/cpp/bindings/receiver_set.h>
#include <mojo/public/cpp/bindings/remote.h>

#include "chromeos/ash/services/cros_healthd/testing/bindings/context.h"
#include "chromeos/ash/services/cros_healthd/testing/bindings/data_generator.h"
#include "{{module.path}}.h"
#include "{{module.path}}-connectivity-forward.h"

{%- for imp in module.imports %}
#include "{{imp.path}}-connectivity.h"
{%  endfor %}

{%- for header in extra_headers %}
#include "{{header}}"
{%  endfor %}

{{namespace_begin()}}

{%- for interface in module.interfaces %}
{%    include "test-provider.h.j2" %}
{%    include "test-consumer.h.j2" %}
{%    for enum in interface.enums %}
{%      include "enum-generator.h.j2" %}
{%    endfor %}
{%- endfor %}

{%  for struct in module.structs %}
{%    include "struct-generator.h.j2" %}
{%    for enum in struct.enums %}
{%      include "enum-generator.h.j2" %}
{%    endfor %}
{%  endfor %}

{%  for union in module.unions %}
{%    include "union-generator.h.j2" %}
{%  endfor %}

{%  for enum in module.enums %}
{%    include "enum-generator.h.j2" %}
{%  endfor %}

{{namespace_end()}}

#endif  // {{header_guard}}
